/*!
 * \file nuRect.h
 * \brief Rectangle class.
 * \author Nus
 * \date 2008/03/09, 23:12
 */

#ifndef __NURECT_H__
#define __NURECT_H__

#include "Types.h"
#include "nuPoint.h"

/*!
 * \class nuRect
 * \brief A rectangle.
 */
class nuRect
{
public:
  //! \brief Constructor.
  nuRect(f32 x_org = 0.0f, f32 y_org = 0.0f,
         f32 width = 0.0f, f32 height = 0.0f)
      : OriginX(x_org),
        OriginY(y_org),
        Width(width),
        Height(height)
  {
    // None...
  }

  //! \brief Constructor.
  nuRect(const nuRect& rr)
      : OriginX(rr.OriginX),
        OriginY(rr.OriginY),
        Width(rr.Width),
        Height(rr.Height)
  {
    // None...
  }
  
  //! \brief Constructor.
  ~nuRect() {
    // None...
  }
  
  //! \brief Assign operator.
  inline nuRect& operator = (const nuRect& rr);
  
  //! \brief Get top-left point.
  inline nuPoint getTopLeft(void) const;

  //! \brief Get top-right point.
  inline nuPoint getTopRight(void) const;
  
  //! \brief Get bottom-left point.
  inline nuPoint getBottomLeft(void) const;

  //! \brief Get bottom-right point.
  inline nuPoint getBottomRight(void) const;
  
  f32 OriginX;                    //!< X-origin.
  f32 OriginY;                    //!< Y-origin.
  f32 Width;                      //!< Width.
  f32 Height;                     //!< Height.

protected:
  // None...

private:
  // None...

};

#include "inlineRect.h"

#endif
